package org.ytor.common.util.json.status;

import org.ytor.common.util.json.AbsJsonState;
import org.ytor.common.util.json.JsonFsm;

/**
 * created by yangtong on 2025/4/14 22:41:56
 * <br/>
 * 表示正在读取字符串类型的value
 */
public class InStringValueState extends AbsJsonState {
    @Override
    public void handleNonWhitespace(JsonFsm fsm, char c) {
        //表示读取到了字符串value的结尾
        if (c == '"') {
            //读取完一对键值对，就写入map
            fsm.acceptValue(fsm.getBuffer());

            //由于当前读到的字符是'"'，不知道下一个字符是什么，可能是','(表示还有其他的键值对)，也可能是'}'(表示当前json对象字符串读完了)，所以将状态变成EXPECT_COMMA_OR_END
            fsm.changeState(EXPECT_COMMA_OR_END);
        }
        //持续读取字符串value，并压入缓存
        else {
            fsm.writeBuffer();
        }
    }
}
